#ifndef CROSSVALIDATION_H_
#define CROSSVALIDATION_H_

#include <vector>
#include <iostream>

#include "Perceptron.h"
#include "DataSet.h"

using namespace std;

// Classe que representa o algoritmo de CrossValidation
class CrossValidation
{

public:

    // Divide o conjunto de dados em k sub-amostras
    CrossValidation(uint k, DataSet& ds);
    virtual ~CrossValidation();

    // Executa o algoritmo de CrossValidation para o perceptron passado
    void execute(Perceptron& p, uint maxIt);

private:

    uint k;
    uint *group; // Vetor que diz a qual grupo pertence cada dado

    DataSet& ds;

    // Preenche os dados de treinamento e de teste para uma certa iteração
    void fillDataSets(DataSet& training, DataSet& test, uint i);

};

#endif /* CROSSVALIDATION_H_ */
